<?php
// +----------------------------------------------------------------------
// | SL 2018.8.17
// +----------------------------------------------------------------------
// | Copyright (c) 2018~2018 http://sl.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: zq <1040657944@qq.com>
// +----------------------------------------------------------------------

namespace app\model;


use think\Model;

class RoleModel extends Model
{
    // 确定链接表名
    protected $name = 'role';

    /**
     * 插入新的角色
     */
    public function insertRole($param)
    {
        try{
            $result =  $this->validate('RoleValidate')->save($param);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, url('role/index'), '添加角色成功!');
            }
        }catch(PDOException $e){

            return msg(-2, '', $e->getMessage());
        }

    }

    /**
     * 查询所有管理员
     */
    public function getAllRoles($where,$offset,$limit)
    {
        return $this->where($where)->limit($offset, $limit)->select();
    }


    /**
     * 根据搜索条件获取所有的用户数量
     */
    public function getAllRolesCount($where)
    {
        return $this->where($where)->count();
    }

    /**
     * 获取单条数据信息
     */
    public function getOneRole($where)
    {
        return $this->where($where)->find();
    }

    /**
     * 获取父类数据信息
     */
    public function getParentRole($where)
    {
        $result = $this->where($where)->find();
        return $result['rule'];
    }

    /**
     * 编辑角色信息
     */
    public function editRoles($param)
    {
        try{

            $result =  $this->validate('UserValidate')->save($param, ['role_id' => $param['role_id']]);

            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, url('role/index'), '编辑角色成功');
            }
        }catch(PDOException $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 删除角色
     */
    public function delRole($id)
    {
        try{
            $this->where('role_id', $id)->delete();
            return msg(1, '', '删除角色成功');

        }catch( PDOException $e){
            return msg(-1, '', $e->getMessage());
        }
    }

    /**
     * 查询所有角色
    */
    public function getAllRole()
    {
        $map['role_id'] = ['neq',1]; #除了超级管理员
        $map['disabled'] = 1;
        return $this->where($map)->select();
    }

    /**
     * 分配权限成功
    */
    public function setRoleNode($data)
    {
        try{

            $result =  $this->save($data, ['role_id' => $data['role_id']]);

            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, url('role/index'), '分配权限成功');
            }
        }catch(PDOException $e){
            return msg(-2, '', $e->getMessage());
        }
    }



}